package main

import (
	"fmt"
	"math"
	"strings"
)

/**
	基本数据类型：
	1.整型
		有符号：int8, int16,
		无符号：uint8, uint16
	2.浮点型
		float32, float64
	3.复数
		complex64、complex128
	4.布尔值
		false、true
	5.字符串
		string
	6.byte和rune类型
		处理中文、日文时使用rune类型
		使用rune类型可以处理Unicode
	7.类型转换
		类型(表达式)
 */

func traversalString()  {
	s := "hello沙河"
	for i := 0; i < len(s); i++ {	//byte
		fmt.Printf("%v(%c) ",s[i],s[i])
	}
	fmt.Println()
	for _, r := range s{	//rune
		fmt.Printf("%v(%c) ", r, r)
	}
	fmt.Println()
}

func changeString() {
	s1 := "big"
	//强制类型转换
	byteS1 := []byte(s1)
	byteS1[0] = 'p'
	fmt.Println(string(byteS1))

	s2 := "白萝卜"
	runeS2 := []rune(s2)
	runeS2[0] = '红'
	fmt.Println(string(runeS2))

}

//类型转换
func sqrtDemo() {
	var a, b = 3, 4
	var c int
	//math.Sqrt()接收的参数是float64类型,需要强制类型转换
	c = int(math.Sqrt(float64(a*a + b*b)))
	fmt.Println(c)
}
func main() {
	fmt.Printf("%f\n",math.Pi)	//浮点型
	var c1 complex64
	c1 = 1 + 2i
	fmt.Println(c1)
	//多行字符串
	s1 := `11
			2222
			333`
	fmt.Println(s1)
	//字符串判断
	fmt.Println(len(s1)) //求长度
	a := "aaa"
	b := "bbb"
	c := a + b
	fmt.Println(a+b) //字符串拼接
	d := "aaaa,bbbb"
	stringArr := strings.Split(d,",")	//字符串分割
	fmt.Println(stringArr)
	e := strings.Contains(c, a)	//是否包含
	fmt.Println(e)
	e = strings.HasPrefix(d,a)	//判断前缀
	e = strings.HasSuffix(d,b)	//判断后缀
	traversalString()
	changeString()
	sqrtDemo()
}
